#include <stdio.h>

char mask[10] = {0};
int n1 = 0, n2 = 0, n3 = 0;

void dfs(int level)
{
    if (level < 3) // 1st num
    {
        for (int i = 1; i < 10; ++i)
        {
            if (!mask[i])
            {
                mask[i] = 1;
                n1 *= 10;
                n1 += i;
                dfs(level + 1);
                mask[i] = 0;
                n1 /= 10;
            }
        }
    }
    else if (level < 6) // 2nd num
    {
        for (int i = 1; i < 10; ++i)
        {
            if (!mask[i])
            {
                mask[i] = 1;
                n2 *= 10;
                n2 += i;
                dfs(level + 1);
                mask[i] = 0;
                n2 /= 10;
            }
        }
    }
    else if (level < 9) // 3rd num
    {
        for (int i = 1; i < 10; ++i)
        {
            if (!mask[i])
            {
                mask[i] = 1;
                n3 *= 10;
                n3 += i;
                dfs(level + 1);
                mask[i] = 0;
                n3 /= 10;
            }
        }
    }
    else // check
    {
        if (n2 == 2 * n1 && n3 == 3 * n1)
        {
            printf("%i %i %i", n1, n2, n3);
            // cout << "correct" << endl;
        }
    }
}

int main()
{
    dfs(0);
    return 0;
}